/*
 * Copyright (C) 2010 恒康信息科技有限公司
 * 版权所有
 */
package com.jjmmbb.anydolist;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Window;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.jjmmbb.anydolist.R;

public class BaseActivity extends Activity {
	public Resources res; // 系统资源,会被初始化,方便调用系统资源,字符串用getStr()获取
	public LinearLayout headerView; // 标题view
	public TextView titleView; // 标题文本view
	public String title = ""; // 标题,请在子类onCreate中设置,在本类的onResume中将设置
	public String jsonStr = ""; // json字符串

	AlertDialog alertDialog;
	MyApplication ap;

	/**
	 * 是否开启日志输出,在Debug状态下开启, 在Release状态下关闭以提升程序性能
	 * */

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		super.onCreate(savedInstanceState);

		ap = (MyApplication) getApplication();
		res = getResources();

		int inputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN;
		getWindow().setSoftInputMode(inputMode);
	}

	// -----------------------工具----------------------/

	/**
	 * 从资源获取字符串
	 * 
	 * @param resId
	 * @return
	 */
	public String getStr(int resId) {
		return res.getString(resId);
	}

	/**
	 * 从EditText 获取字符串
	 * 
	 * @param editText
	 * @return
	 */
	public String getStr(EditText editText) {
		return editText.getText().toString();
	}

	/**
	 * 检查字符串是否是空对象或空字符串
	 * 
	 * @param str
	 * @return 为空返回true,不为空返回false
	 */
	public boolean isNull(String str) {
		if (null == str || "".equals(str) || "null".equalsIgnoreCase(str)) {
			return true;
		} else {
			return false;
		}
	}

	/**
	 * 检查字符串是否是字符串
	 * 
	 * @param str
	 * @return 为空返回true,不为空返回false
	 */
	public boolean isStr(String str) {
		return !isNull(str);
	}

	/**
	 * 从当前activity跳转到目标activity,<br>
	 * 如果目标activity曾经打开过,就重新展现,<br>
	 * 如果从来没打开过,就新建一个打开
	 * 
	 * @param cls
	 */
	public void gotoExistActivity(Class<?> cls) {
		Intent intent;
		intent = new Intent(this, cls);
		intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
		startActivity(intent);
	}

	/**
	 * 新建一个activity打开
	 * 
	 * @param cls
	 */
	public void gotoActivity(Class<?> cls) {
		Intent intent;
		intent = new Intent(this, cls);
		startActivity(intent);
	}

	/**
	 * 通用消息提示
	 * 
	 * @param resId
	 */
	public void toast(int resId) {
		Toast.makeText(this, resId, Toast.LENGTH_SHORT).show();
	}

	/**
	 * 通用消息提示
	 * 
	 * @param resId
	 */
	public void toast(String msg) {
		Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
	}

	/**
	 * 通用异常抛出,浮出一个通用的提示信息,通常抛出异常掉这个方法就可以了
	 * 
	 * @param msg
	 *            为空时使用默认提示
	 */
	// 处理异常推荐使用本方法
	public void showException(Exception e) {
		toastException(getStr(R.string.err_exception));
	}

	// 子定义异常提示信息,推荐使用本方法
	public void showException(Exception e, String msg) {
		toastException(msg);
	}

	// 显示错误提示给用户,一般使用上面两种方法,在非异常处理的情况下使用本方法
	public void toastException(String msg) {
		if (isNull(msg)) {
			toast(R.string.err_exception);
		} else {
			toast(msg);
		}
	}

	// -----------------------------on开头方法---------------------//

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		switch (keyCode) {
		case KeyEvent.KEYCODE_BACK:
			this.finish();
		}
		return super.onKeyDown(keyCode, event);
	}
}
